package com.atguigu.lease.web.admin.controller.apartment;

import com.atguigu.lease.common.result.Result;
import com.atguigu.lease.model.entity.PaymentType;
import com.atguigu.lease.web.admin.service.PaymentTypeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yang
 * @Date: 2025/08/04/8:17
 * @Description:
 *
 * 前后端分离的项目：
 *     后端controller就是接口，前端与后端controller接口对接
 *
 *
 *   接口调用出现错误状态码
 *      路径写错或资源不存在  404
 *      请求method错误 405
 *      无权访问 403
 *      参数错误 400
 *      服务器错误 500
 *      请求成功  200
 *
 *      接口的主要功能：      ？传参 单个           占位符        批量接收 只有get不需要
 *      接收请求，获取数据 （@RequestParam    @PathVariable   @RequestBody   @RequestHead   @CookieValue  HttpServletRequest）
 *      调用业务层，完成业务处理，数据处理
 *      返回结果给调用者(被称为客户端：可能是移动端，pc端，第三方系统，Iot物联网设备)统一结构做封装（Result）
 *
 */

@Tag(name = "支付方式管理")
@RestController
@RequestMapping("/admin/payment")
public class PaymentTypeController {

    @Autowired
    PaymentTypeService paymentTypeService;

    //SpringMvc框架默认继承Jackson组件。通过HttpMessageConverter消息转换器，将bean对象序列化为JSON字符串
     //只需加上@Responsebody
   //查询所有支付方式

//    {
//        "code": 200,
//            "message": "成功",
//            "data": [
//        {
//            "id": 6,
//                "name": "月付",
//                "payMonthCount": "1",
//                "additionalInfo": "押一付一"
//        },
//  ]
//    }

    @Operation(summary = "查询所有支付方式")
    @GetMapping("list")
   public Result<List<PaymentType>> listPaymentType(){
        List<PaymentType> paymentTypeList = paymentTypeService.list();
        return Result.ok(paymentTypeList);
    }


    // http://localhost:8080/admin/payment/deleteById?id=1
    //根据id删除支付方式
   @Operation(summary = "根据ID删除支付方式")
   @DeleteMapping("deleteById")
   public Result deleteById(@RequestParam Long id){
       paymentTypeService.removeById(id);
       return  Result.ok();
   }


    //保存或更新支付方式

    @Operation(summary = "保存或更新支付方式")
    @PostMapping("saveOrUpdate")  //数据存放在请求体传递过来的，需要将请求体的JSON数据转换为Bean对象
    public Result saveOrUpdate(@RequestBody PaymentType paymentType){
       paymentTypeService.saveOrUpdate(paymentType);
       return Result.ok();
    }


}
